#ifndef TASK_QUEUE_H
#define TASK_QUEUE_H

#include "task.h"

#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <pthread.h>

typedef struct Node Node;

typedef struct TaskQueue TaskQueue;

// 创建任务队列
TaskQueue *createTaskQueue(int capacity);

// 销毁任务队列
void destroyTaskQueue(TaskQueue *queue);

// 获取队列的节点数量
int size(TaskQueue *queue);

// 获取队列的最大容量
int capacity(TaskQueue *queue);

// 队列是否为空
bool empty(TaskQueue *queue);

// 获取队头元素
Task *front(TaskQueue *queue);

// 获取队尾元素
Task *back(TaskQueue *queue);

// 清空队列
void clear(TaskQueue *queue);

// 队列添加新节点
bool push(TaskQueue *queue, Task *task);

// 队头出列
bool pop(TaskQueue *queue);

#endif // TASK_QUEUE_H
